app: Warn when trying to add windows on an inert instance
authorEmmanuele Bassi <ebassi@gnome.org>
Thu, 1 Oct 2015 17:58:32 +0000 (18:58 +0100)
committerEmmanuele Bassi <ebassi@gnome.org>
Thu, 1 Oct 2015 18:24:12 +0000 (19:24 +0100)
Application windows can only be added after the application has been
started.

https://bugzilla.gnome.org/show_bug.cgi?id=755954

gtk/gtkapplication.c

index ba7ef7b49e19ba1294ddd470e265ddf50e2a0458..0edfe925e2836a499b26410b4706e0f5be35077a 100644 (file)
@@ -1020,6 +1020,10 @@ gtk_application_new (const gchar       *application_id,
  *
  * Adds a window to @application.
  *
+ * This call can only happen after the @application has started;
+ * typically, you should add new application windows in response
+ * to the emission of the #GApplication::activate signal.
+ *
  * This call is equivalent to setting the #GtkWindow:application
  * property of @window to @application.
  *
@@ -1027,7 +1031,7 @@ gtk_application_new (const gchar       *application_id,
  * will remain until the window is destroyed, but you can explicitly
  * remove it with gtk_application_remove_window().
  *
- * GTK+ will keep the application running as long as it has
+ * GTK+ will keep the @application running as long as it has
  * any windows.
  *
  * Since: 3.0
@@ -1038,6 +1042,13 @@ gtk_application_add_window (GtkApplication *application,
 {
   g_return_if_fail (GTK_IS_APPLICATION (application));
 
+  if (!g_application_get_is_registered (G_APPLICATION (application)))
+    {
+      g_critical ("New application windows must be added after the "
+                  "GApplication::startup signal has been emitted.");
+      return;
+    }
+
   if (!g_list_find (application->priv->windows, window))
     g_signal_emit (application,
                    gtk_application_signals[WINDOW_ADDED], 0, window);